package org.jsola.hr.helper;

import org.jsola.common.DateKit;
import org.jsola.hr.dto.AttendPunchStaffAddDTO;
import org.jsola.hr.dto.AttendPunchStaffUpdateDTO;
import org.jsola.hr.entity.AttendPunchStaffDO;
import org.jsola.hr.query.AttendPunchStaffQuery;
import org.jsola.hr.service.IAttendPunchStaffService;
import org.jsola.hr.vo.AttendPunchStaffVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;

import java.util.List;

import static org.jsola.hr.core.AbstractTest.SITE_ID;



/**
 * @author zhr
 */
@Component
public class AttendPunchStaffTestHelper extends BaseTestHelper {
    
    @Autowired
    private IAttendPunchStaffService attendPunchStaffService;

    /**
     * 生成add测试数据
     * @return AttendPunchStaffAddDTO
     */
    public AttendPunchStaffAddDTO getAttendPunchStaffAddDTO(){
        AttendPunchStaffAddDTO attendPunchStaffAddDTO = new AttendPunchStaffAddDTO();
        attendPunchStaffAddDTO.setCompanyId(getRandomValue("varchar",32));
        attendPunchStaffAddDTO.setCompanyName(getRandomValue("varchar",100));
        attendPunchStaffAddDTO.setDeptId(getRandomValue("varchar",32));
        attendPunchStaffAddDTO.setDeptName(getRandomValue("varchar",50));
        attendPunchStaffAddDTO.setAttendPlanId(getRandomValue("varchar",32));
        attendPunchStaffAddDTO.setEmpInfoId(getRandomValue("varchar",32));
        attendPunchStaffAddDTO.setEmpInfoName(getRandomValue("varchar",50));
        return attendPunchStaffAddDTO;
    }


    /**
     * 生成update测试数据
     * @return AttendPunchStaffUpdateDTO
     */
    public AttendPunchStaffUpdateDTO getAttendPunchStaffUpdateDTO(AttendPunchStaffVO attendPunchStaffVO){
        return attendPunchStaffService.selectDOById(attendPunchStaffVO.getId(), SITE_ID).to(AttendPunchStaffUpdateDTO.class);
    }

    /**
     * 生成查询数据
     * @return AttendPunchStaffQuery
     */
    public AttendPunchStaffQuery getAttendPunchStaffQuery() {
        AttendPunchStaffQuery attendPunchStaffQuery = new AttendPunchStaffQuery();
        List<AttendPunchStaffDO> attendPunchStaffDOList = attendPunchStaffService.list(new AttendPunchStaffDO(),SITE_ID);
        if (!CollectionUtils.isEmpty(attendPunchStaffDOList)) {
            AttendPunchStaffDO attendPunchStaffDO = attendPunchStaffDOList.get(0);
            attendPunchStaffQuery = attendPunchStaffDO.to(AttendPunchStaffQuery.class);
            if (attendPunchStaffDO.getGmtCreate() != null) {
                attendPunchStaffQuery.setGmtCreateStart(DateKit.getBeforeDay(attendPunchStaffDO.getGmtCreate(),-1));
                attendPunchStaffQuery.setGmtCreateEnd(DateKit.getBeforeDay(attendPunchStaffDO.getGmtCreate(),1));
            }
            if (attendPunchStaffDO.getGmtModified() != null) {
                attendPunchStaffQuery.setGmtModifiedStart(DateKit.getBeforeDay(attendPunchStaffDO.getGmtModified(),-1));
                attendPunchStaffQuery.setGmtModifiedEnd(DateKit.getBeforeDay(attendPunchStaffDO.getGmtModified(),1));
            }
        }
        return attendPunchStaffQuery;
    }

    /**
     * 保存示例
     * @return AttendPunchStaffVO
     */
    public AttendPunchStaffVO saveAttendPunchStaffExample(){
        AttendPunchStaffAddDTO addDTO = this.getAttendPunchStaffAddDTO();
        AttendPunchStaffVO attendPunchStaffVO = attendPunchStaffService.save(addDTO,buildTokenUser());
        return attendPunchStaffVO;
    }


}

